package ThreadBaseTest;

/**
 * Created by yexuan on 2018/3/5.
 *
 * Java VM 启动的时候会有一个进程java.exe
 * 该进程中至少有一个线程负责java程序的执行，而且这个线程运行的代码存在于main方法中，该线程称之为主线程。
 *
 * 扩展：jvm启动不止一个线程，还有负责垃圾回收机制的线程。
 *
 *
 * 创建线程的第一种方式： 继承Thread类。
 * 1、定义类继承Thread类。
 * 2、复写Thread类中的run方法。
 *    目的：将自定义的代码存贮在run方法中，让线程运行。
 * 3、调用线程的start方法，该方法有两个作用：启动线程；调用run方法。
 *
 * 每次运行结果都不同，因为多个线程都获取cpu的执行权，cpu执行到谁，谁就运行。
 * cpu在做着快速的切换，以达到看上去是同时运行的效果。
 *
 * 这就是多线程的一个特性：随机性。
 */

class Demo extends Thread{
    Demo(){

    }
    Demo(String name){
        super(name);
    }
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            //线程有自己默认的名称   Thread-编号，该编号从0开始
            System.out.println((Thread.currentThread()==this)+this.getName()+"demo---"+i);
        }
    }
}
public class ThreadDemo {
    public static void main(String[] args) {
        Demo d1 = new Demo("one--");
        Demo d2 = new Demo("two--");
        d1.start();  //开启线程并执行run方法
        d2.start();
//        d.run();  //仅仅是对象调用方法，而线程创建了，并没有运行

        for (int i = 0; i < 300; i++) {
            System.out.println("main---"+i);
        }
    }
}
